#! /usr/bin/env python
# -*- coding: utf-8 -*-

# *************************************************************
#     Filename @  decomaker.py
#       Author @  Huoty
#  Create date @  2014-10-24 13:12:30
#  Description @  
# *************************************************************

deco_args = "HaHa"

def decomaker(arg):
    '通常对arg会有一定的要求'
    """由于有参数的decorator函数在调用时只会使用应用时的参数
       而不接收被装饰的函数做为参数，所以必须在其内部再创建
       一个函数
    """
    def newDeco(func):    #定义一个新的decorator函数
        print func, arg
        return func
    return newDeco

@decomaker(deco_args)
def foo():pass

# Script starts from here

foo()

# 第一个函数decomaker是装饰函数，
# 它的参数是用来加强“加强装饰”的。
# 由于此函数并非被装饰的函数对象，
# 所以在内部必须至少创建一个接受被装饰函数的函数，
# 然后返回这个对象（实际上此时foo=decomaker(arg)(foo)）

